home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2000 September / september_2000.iso / intercd / root / ^Linux / cdrtools-1.10 / cdrecord / iso9660.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-10-17  |  5.4 KB  |  170 lines

  1. /* @(#)iso9660.h    1.4 99/10/18 Copyright 1996 J. Schilling */
  2. /*
  3.  *    Copyright (c) 1996 J. Schilling
  4.  */
  5. /*
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2, or (at your option)
  9.  * any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program; see the file COPYING.  If not, write to
  18.  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  */
  20.  
  21. #define    _delta(from, to)    ((to) - (from) + 1)
  22.  
  23. #define    VD_BOOT        0
  24. #define    VD_PRIMARY    1
  25. #define    VD_SUPPLEMENT    2
  26. #define    VD_PARTITION    3
  27. #define    VD_TERM        255
  28.  
  29. #define    VD_ID        "CD001"
  30.  
  31. struct    iso9660_voldesc {
  32.     char    vd_type        [_delta(1, 1)];
  33.     char    vd_id        [_delta(2, 6)];
  34.     char    vd_version    [_delta(7, 7)];
  35.     char    vd_fill        [_delta(8, 2048)];
  36. };
  37.  
  38. struct    iso9660_boot_voldesc {
  39.     char    vd_type        [_delta(1, 1)];
  40.     char    vd_id        [_delta(2, 6)];
  41.     char    vd_version    [_delta(7, 7)];
  42.     char    vd_bootsys    [_delta(8, 39)];
  43.     char    vd_bootid    [_delta(40, 71)];
  44.     char    vd_bootcode    [_delta(72, 2048)];
  45. };
  46.  
  47. struct    iso9660_pr_voldesc {
  48.     char    vd_type            [_delta(   1,    1)];
  49.     char    vd_id            [_delta(   2,    6)];
  50.     char    vd_version        [_delta(   7,    7)];
  51.     char    vd_unused1        [_delta(   8,    8)];
  52.     char    vd_system_id        [_delta(   9,    40)];
  53.     char    vd_volume_id        [_delta(  41,    72)];
  54.     char    vd_unused2        [_delta(  73,    80)];
  55.     char    vd_volume_space_size    [_delta(  81,    88)];
  56.     char    vd_unused3        [_delta(  89,    120)];
  57.     char    vd_volume_set_size    [_delta( 121,    124)];
  58.     char    vd_volume_seq_number    [_delta( 125,    128)];
  59.     char    vd_lbsize        [_delta( 129,    132)];
  60.     char    vd_path_table_size    [_delta( 133,    140)];
  61.     char    vd_pos_path_table_l    [_delta( 141,    144)];
  62.     char    vd_opt_pos_path_table_l    [_delta( 145,    148)];
  63.     char    vd_pos_path_table_m    [_delta( 149,    152)];
  64.     char    vd_opt_pos_path_table_m    [_delta( 153,    156)];
  65.     char    vd_root_dir        [_delta( 157,    190)];
  66.     char    vd_volume_set_id    [_delta( 191,    318)];
  67.     char    vd_publisher_id        [_delta( 319,    446)];
  68.     char    vd_data_preparer_id    [_delta( 447,    574)];
  69.     char    vd_application_id    [_delta( 575,    702)];
  70.     char    vd_copyr_file_id    [_delta( 703,    739)];
  71.     char    vd_abstr_file_id    [_delta( 740,    776)];
  72.     char    vd_bibl_file_id        [_delta( 777,    813)];
  73.     char    vd_create_time        [_delta( 814,    830)];
  74.     char    vd_mod_time        [_delta( 831,    847)];
  75.     char    vd_expiry_time        [_delta( 848,    864)];
  76.     char    vd_effective_time    [_delta( 865,    881)];
  77.     char    vd_file_struct_vers    [_delta( 882,    882)];
  78.     char    vd_reserved1        [_delta( 883,    883)];
  79.     char    vd_application_use    [_delta( 884,    1395)];
  80.     char    vd_fill            [_delta(1396,    2048)];
  81. };
  82.  
  83. struct    iso9660_dir {
  84.     char    dr_len            [_delta(   1,    1)];
  85.     char    dr_eattr_len        [_delta(   2,    2)];
  86.     char    dr_eattr_pos        [_delta(   3,    10)];
  87.     char    dr_data_len        [_delta(  11,    18)];
  88.     char    dr_recording_time    [_delta(  19,    25)];
  89.     char    dr_file_flags        [_delta(  26,    26)];
  90.     char    dr_file_unit_size    [_delta(  27,    27)];
  91.     char    dr_interleave_gap    [_delta(  28,    28)];
  92.     char    dr_volume_seq_number    [_delta(  29,    32)];
  93.     char    dr_file_name_len    [_delta(  33,    33)];
  94.     char    dr_file_name        [_delta(  34,    34)];
  95. };
  96.  
  97. struct    iso9660_dtime {
  98.     unsigned char    dt_year;
  99.     unsigned char    dt_month;
  100.     unsigned char    dt_day;
  101.     unsigned char    dt_hour;
  102.     unsigned char    dt_minute;
  103.     unsigned char    dt_second;
  104.          char    dt_gmtoff;
  105. };
  106.  
  107. struct    iso9660_ltime {
  108.     char    lt_year            [_delta(   1,    4)];
  109.     char    lt_month        [_delta(   5,    6)];
  110.     char    lt_day            [_delta(   7,    8)];
  111.     char    lt_hour            [_delta(   9,    10)];
  112.     char    lt_minute        [_delta(  11,    12)];
  113.     char    lt_second        [_delta(  13,    14)];
  114.     char    lt_hsecond        [_delta(  15,    16)];
  115.     char    lt_gmtoff        [_delta(  17,    17)];
  116. };
  117.  
  118. struct iso9660_path_table {
  119.     char    pt_di_len        [_delta(   1,    1)];
  120.     char    pt_eattr_len        [_delta(   2,    2)];
  121.     char    pt_eattr_pos        [_delta(   3,    6)];
  122.     char    pt_di_parent        [_delta(   7,    8)];
  123.     char    pt_name            [_delta(   9,    9)];
  124. };
  125.  
  126. struct iso9660_eattr {
  127.     char    ea_owner        [_delta(   1,    4)];
  128.     char    ea_group        [_delta(   5,    8)];
  129.     char    ea_perm            [_delta(   9,    10)];
  130.     char    ea_ctime        [_delta(  11,    27)];
  131.     char    ea_mtime        [_delta(  28,    44)];
  132.     char    ea_extime        [_delta(  45,    61)];
  133.     char    ea_eftime        [_delta(  62,    78)];
  134.     char    ea_record_format    [_delta(  79,    79)];
  135.     char    ea_record_attr        [_delta(  80,    80)];
  136.     char    ea_record_len        [_delta(  81,    84)];
  137.     char    ea_system_id        [_delta(  85,    116)];
  138.     char    ea_system_use        [_delta( 117,    180)];
  139.     char    ea_version        [_delta( 181,    181)];
  140.     char    ea_esc_seq_len        [_delta( 182,    182)];
  141.     char    ea_reserved1        [_delta( 183,    246)];
  142.     char    ea_appl_use_len        [_delta( 247,    250)];
  143.     char    ea_appl_use        [_delta( 251,    251)];    /* actually more */
  144. /*    char    ea_esc_seq        [_delta( xxx,    xxx)];    */
  145.  
  146. };
  147.  
  148. #define    PERM_MB_ONE    0xAAAA
  149.  
  150. #define    PERM_RSYS    0x0001
  151. #define    PERM_XSYS    0x0004
  152.  
  153. #define    PERM_RUSR    0x0010
  154. #define    PERM_XUSR    0x0040
  155.  
  156. #define    PERM_RGRP    0x0100
  157. #define    PERM_XGRP    0x0400
  158.  
  159. #define    PERM_ROTH    0x1000
  160. #define    PERM_XOTH    0x4000
  161.  
  162.  
  163. #define    GET_UBYTE(a)    a_to_u_byte(a)
  164. #define    GET_SBYTE(a)    a_to_byte(a)
  165. #define    GET_SHORT(a)    a_to_u_2_byte(&((unsigned char *) (a))[0])
  166. #define    GET_BSHORT(a)    a_to_u_2_byte(&((unsigned char *) (a))[2])
  167. #define    GET_INT(a)    a_to_4_byte(&((unsigned char *) (a))[0])
  168. #define    GET_LINT(a)    la_to_4_byte(&((unsigned char *) (a))[0])
  169. #define    GET_BINT(a)    a_to_4_byte(&((unsigned char *) (a))[4])
  170.